package com.ai.opc;

import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
import org.eclipse.milo.opcua.stack.core.types.structured.EndpointDescription;

/**
 * @Author jiaok
 * @Date 2024-11-08 13:44
 */
public class OpcClientDemo3 {
    public static OpcUaClient creatClient() {
//        try {
//            // 连接地址端口号
//            String EndPointUrl = "opc.tcp://192.168.1.120:49320";
//            //安全策略选择
//            EndpointDescription[] endpointDescription = UaTcpStackClient.getEndpoints(EndPointUrl).get();
//            //过滤掉不需要的安全策略，选择一个自己需要的安全策略
//            EndpointDescription endpoint = Arrays.stream(endpointDescription)
//                    .filter(e -> e.getSecurityPolicyUri().equals(SecurityPolicy.NONE))
//                    .findFirst().orElseThrow(() -> new Exception("no desired endpoints returned"));
//
//            OpcUaClientConfig config = OpcUaClientConfig.builder()
//                    .setApplicationName(LocalizedText.english("test")) // opc ua 定义的名
//                    .setApplicationUri(EndPointUrl)// 地址
//                    .setEndpoint(endpoint)// 安全策略等配置
//                    .setIdentityProvider(new UsernameProvider("username", "password"))
//                    .setRequestTimeout(UInteger.valueOf(50000)) //等待时间
//                    .build();
//
//            OpcUaClient opcClient = new OpcUaClient(config);// 准备连接
//            return opcClient;
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
        return null;
    }
}
